<?php
require_once('\Models\LoginModel.php');
require_once('\Views\ILoginView.php');
require_once('\Common\Strings.php');
require_once('\Views\PageView.php');

class LoginController
{
	/**
	 * Skapa kontroll
	 * @return $html HTML string
	 */
	public static function createControl(ILoginView $lv)
	{
		$lm = new LoginModel();
		
		$html = "";
		
		// Kollar om användaren försökt att logga in
		if ($lv->triedToLogin()) 
		{
			// Logga in med angivet användarnamn och lösenord
			$lm->Login($lv->getUserName(), $lv->getPassword());
			
			if($lm->IsLoggedIn())
			{
				$html .= $lv->encapsulateString("p", Strings::LOGIN_AS . $lv->getUserName());
				
				// Sparar användaren i sessionen så användarnamnet
				// kan kommas åt om ingen cookie är satt
				$lv->saveUserNameInSession($lv->getUserName());
				
				// Kollar om användaren vill fortsätta vara inloggad
				// Användaren kommer vara inloggad i 60 sekunder
				if($lv->rememberMe(60))
					$html .= $lv->encapsulateString("p", Strings::LOGIN_REMEMBER_ME);
				else 
					$html .= $lv->encapsulateString("p", Strings::LOGIN_FORGET_ME);
				
				$html .= $lv->createLogoutBox();
			}
			else
			{
				$html .= PageView::setStatusText(Strings::LOGIN_INCORRECT, false);
				$html .= $lv->createLoginBox();
			}
		}
		// Kollar om användaren försökt att logga ut
		else if($lv->triedToLogout())
		{
			// Logga ut
			$lm->Logout();
			
			// Ta bort cookie (automatisk inloggning)
			$lv->forgetMe();
			
			// Kontrollera att användaren loggats ut
			if($lm->IsLoggedIn() == false)
			{
				$html .= $lv->encapsulateString("p", Strings::LOGIN_OUT);
				$html .= $lv->createLoginBox();
			}
		}
		// Om användaren varken försökt logga in eller ut
		else
		{
			// Om användaren har uppgifter sparade
			$login = $lv->getSavedLogin();
			
			if($login != null)
			{
				// Logga in med sparade uppgifter. Användarnamn på index 0, lösen på index 1
				$lm->Login($login[0], $login[1]);
				
				// Kontrollera att användaren nu är inloggad
				if($lm->IsLoggedIn())
				{
					$html .= $lv->encapsulateString("p", Strings::LOGIN_AS . $login[0]);
					$html .= $lv->createLogoutBox();
				}
				else
				{
					
					$html .= PageView::setStatusText(Strings::LOGIN_AUTO_FAILED, false);
					$html .= $lv->createLoginBox();
				}
			}
			// Skapa inloggningsruta om ej uppgifter finns sparade
			else
			{
				if(!$lm->IsLoggedIn())
				{
					$html .= $lv->encapsulateString("p", Strings::LOGIN_NOT);
					$html .= $lv->createLoginBox();
				}
				else
				{
					$html .= $lv->encapsulateString("p", Strings::LOGIN_AS . $lv->getUserNameFromSession());
					$html .= $lv->createLogoutBox();
				}
			}
		}
		return $html;
	}
}
?>